package com.zxz.mq.service;

import com.zxz.mq.dto.TransMessageDto;

import java.util.List;

public interface IMessageSendService {
    /**
     * 消息发送前
     * @param exchange exchange
     * @param routingKey routingKey
     * @param body body
     * @return 消息信息
     */
    TransMessageDto messageSendReady(String exchange, String routingKey, String body);

    /**
     * 消息发送成功后
     * @param id 消息id
     */
    void messageSendSuccess(String id);

    /**
     * 消息发送失败 触发Return机制
     * @param id 消息id
     * @param exchange exchange
     * @param routingKey routingKey
     * @param body body
     * @return 消息信息
     */
    TransMessageDto messageSendReturn(String id, String exchange, String routingKey, String body);

    /**
     * 消息发送失败后 定时重发
     * @param id 消息id
     */
    void messageResend(String id);

    /**
     * 消息超过重试次数，不再重试了
     * @param id 消息id
     */
    void messageDead(String id);

    /**
     * 消息发送前消息列表
     * @return 消息信息List
     */
    List<TransMessageDto> messageSendReadyList();

}
